﻿''' <summary>
''' Interface zum Erstellen eines CustomLayouts (Benutzerdefiniertes Layout)
''' </summary>
''' <remarks>Es werden nur Layouts erkannt, die von dieser Klasse erben.</remarks>
Public Interface ICustomLayout
    ''' <summary>
    ''' Repräsentiert den Namen des CustomLayouts.
    ''' </summary>
    ''' <value>String</value>
    ''' <returns>Gibt den Namen des aktuellen CustomLayouts zurück</returns>
    ''' <remarks>Das komplette CustomLayout wird während der Laufzeit nur über diesen Namen ausgewählt. Er sollte demnach nicht gleich dem eines bereits existierendem CustomLayouts sein.</remarks>
    ReadOnly Property Name As String

    ''' <summary>
    ''' Repräsentiert die Versionsnummer des aktuellen CustomLayouts.
    ''' </summary>
    ''' <value>Decimal</value>
    ''' <returns>Gibt die aktuelle Versionsnummer als Decimal zurück.</returns>
    ''' <remarks>Diese Eigenschaft wird momentan nicht vom Hauptprogramm benutzt.</remarks>
    ReadOnly Property Version As Decimal

    ''' <summary>
    ''' Repräsentiert den Autor des CustomLayouts.
    ''' </summary>
    ''' <value>String</value>
    ''' <returns>Gibt einen String zurück, der den Autor des CustomLayouts enthält.</returns>
    ''' <remarks>Diese Eigenschaft wird momentan nicht vom Hauptprogramm benutzt</remarks>
    ReadOnly Property Author As String

    ''' <summary>
    ''' Repräsentiert die aufrufende Instanz von Biller.Window1
    ''' </summary>
    ''' <value>Window1</value>
    ''' <returns>Gibt die aktuelle Instanz von Biller.Window1 zurück</returns>
    ''' <remarks></remarks>
    Property MainWindow As Biller.Window1

    ''' <summary>
    ''' Methode zum direkten Drucken eines Auftrags
    ''' </summary>
    ''' <param name="auftrag">Der Auftrag, der gedruckt werden soll</param>
    ''' <remarks>Da das .NET Framework keine wirklich guten Druckbibliotheken hat, muss sich der Autor des Layouts selber überlegen, wie er diese Funktion implemtieren will.</remarks>
    Sub Print(ByVal auftrag As FuncClasses.Order)

    ''' <summary>
    ''' Methode zum Speichern der PDF des Auftrags
    ''' </summary>
    ''' <param name="auftrag">Auftrag, der als PDF gespeichert werden soll.</param>
    ''' <param name="PathToSave">Speicherpfad der PDF</param>
    ''' <remarks>Der Speicherpfad muss nicht vom Entwickler ermittelt werden, sondern wird hier übergeben (kein SaveFileDialog o.ä. nötig).</remarks>
    Sub Save(ByVal auftrag As FuncClasses.Order, ByVal PathToSave As String)

    ''' <summary>
    ''' Methode zum Speichern der PDF des Auftrags
    ''' </summary>
    ''' <param name="auftrag">Auftrag, der als PDF gespeichert werden soll.</param>
    ''' <param name="PathToSave">Speicherpfad der PDF</param>
    ''' <remarks>Der Speicherpfad muss nicht vom Entwickler ermittelt werden, sondern wird hier übergeben (kein SaveFileDialog o.ä. nötig).</remarks>
    Sub SaveSilent(ByVal auftrag As FuncClasses.Order, ByVal PathToSave As String)
End Interface
